package com.example.myapp;

import android.os.Bundle;
import android.view.MenuItem;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.viewpager2.widget.ViewPager2;

import com.example.myapp.adapter.MyViewPagerAdapter;
import com.example.myapp.fragment.DiscoveryFragment;
import com.example.myapp.fragment.HomeFragment;
import com.example.myapp.fragment.MyFragment;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.navigation.NavigationBarView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    //滑动控件
    private ViewPager2 mViewPage;
    //底部导航栏控件
    private BottomNavigationView mBottomNavigationView;
    //存放界面的结合（Fragemnt作为显示页面）
    private List<Fragment> fragmentList;
    //Fragment适配器
    private MyViewPagerAdapter myViewPagerAdapter;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //设置视图
        setContentView(R.layout.main_activity_layout);
        //初始化view
        initView();
        //初始化Fragment相关配置
        initFragment();
        //切换Fragment
        selectFragment();
    }

    private void initView() {
        //隐藏ActionBar
        ActionBar actionBar = getSupportActionBar();
        if (actionBar!=null){
            actionBar.hide();
        }
        //获取控件实例
        mViewPage=findViewById(R.id.vp);
        mBottomNavigationView=findViewById(R.id.bnv);
    }

    private void initFragment() {
        fragmentList=   new ArrayList<>();
        HomeFragment homeFragment = new HomeFragment();
        //给HomeFragment传Context
        homeFragment.setContext(MainActivity.this);
        DiscoveryFragment discoveryFragment = new DiscoveryFragment();
        MyFragment myFragment = new MyFragment();
        fragmentList.add(homeFragment);
        fragmentList.add(discoveryFragment);
        fragmentList.add(myFragment);
    }
    private void selectFragment() {
        //初始化适配器
        myViewPagerAdapter = new MyViewPagerAdapter(MainActivity.this);
        //把fragmentList传到适配器中
        myViewPagerAdapter.setFragmentList(fragmentList);
        //viewPager2与适配器绑定
        mViewPage.setAdapter(myViewPagerAdapter);
        //切换BottomNavigationView Item的监听
        mBottomNavigationView.setOnItemSelectedListener(new NavigationBarView.OnItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch (item.getItemId()){
                    case R.id.home://选择首页
                        //设置滑动控件viewpage2当前的显示的界面为第一个界面即集合索引为0
                        mViewPage.setCurrentItem(0);
                        return  true;
                    case R.id.discovery: //选择发现
                        //设置滑动控件viewpage2当前的显示的界面为第二个界面即集合索引为1
                        mViewPage.setCurrentItem(1);
                        return  true;
                    case R.id.my://选择我的
                        //设置滑动控件viewpage2当前的显示的界面为第三个界面即集合索引为2
                        mViewPage.setCurrentItem(2);
                        return  true;
                    default:
                        return  false;
                }
            }
        });
        //ViewPager2页面滑动监听
        mViewPage.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
            @Override
            public void onPageSelected(int position) {
                //滑动页面会返回相应页面的位置--->position
                //返回的位置正好与底部导航栏的位置对应，通过这个位置position可以拿到BottomNavigationView的Menu Item
                MenuItem item = mBottomNavigationView.getMenu().getItem(position);
                //选中的页面对应的底部导航栏Item设置已经选中
                item.setChecked(true);
            }
        });

    }
}
